'''
使用ffmeng将m4a格式转换为wav格式
'''
import subprocess
def runcmd(command):
    ret = subprocess.run(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8",timeout=1)
    if ret.returncode == 0:
        print("success:",ret)
    else:
        print("error:",ret)


# runcmd(["dir","/b"])#序列参数
# runcmd("exit")#字符串参数

# cmdline = f'G:\\新机软件安装\\ffmpeg\\ffmpeg-2022-06-12-git-4d45f5acbd-full_build\\bin\\ffmpeg.exe -i m4a\\把声音调到最大.m4a -ar 16000 -ac 1 -codec:a pcm_s16le pcm\\把声音调到最大.wav'
# runcmd(cmdline)#字符串参数



#!/usr/bin/python  
# -*- coding:utf8 -*-  
  
import os  
allFileNum = 0  
def printPath(level, path):  
    global allFileNum  
    ''''' 
    打印一个目录下的所有文件夹和文件 
    '''  
    # 所有文件夹，第一个字段是次目录的级别  
    dirList = []  
    # 所有文件  
    fileList = []  
    # 返回一个列表，其中包含在目录条目的名称(google翻译)  
    files = os.listdir(path)  
    # 先添加目录级别  
    dirList.append(str(level))  
    for f in files:  
        if(os.path.isdir(path + '/' + f)):  
            # 排除隐藏文件夹。因为隐藏文件夹过多  
            if(f[0] == '.'):  
                pass  
            else:  
                # 添加非隐藏文件夹  
                dirList.append(f)  
        if(os.path.isfile(path + '/' + f)):  
            # 添加文件  
            fileList.append(f)  
    # 当一个标志使用，文件夹列表第一个级别不打印  
    i_dl = 0  
    for dl in dirList:  
        if(i_dl == 0):  
            i_dl = i_dl + 1  
        else:  
            # 打印至控制台，不是第一个的目录  
            print ('-' * (int(dirList[0])), dl)
            # 打印目录下的所有文件夹和文件，目录级别+1  
            lpath = os.path.join(path,dl)
            # printPath((int(dirList[0]) + 1), path + '/' + dl)  
            printPath((int(dirList[0]) + 1), lpath)  
    for fl in fileList:  
        # 打印文件  
        # print(path)
        filename = os.path.join(path,fl)
        # print('-' * (int(dirList[0])), fl)  
        print('-' * (int(dirList[0])), filename)  
        # 随便计算一下有多少个文件  
        allFileNum = allFileNum + 1
        if fl.endswith('.m4a'):
            file = os.path.join('pcm',fl[:-4])+'.wav'

            cmdline = f'G:\\新机软件安装\\ffmpeg\\ffmpeg-2022-06-12-git-4d45f5acbd-full_build\\bin\\ffmpeg.exe -i {filename} -ar 16000 -ac 1 -codec:a pcm_s16le {file}'
            print(cmdline)
            runcmd(cmdline)#字符串参数
if __name__ == '__main__':  
    printPath(1, 'm4a')  
    print('总文件数 =', allFileNum)